class WebServiceController < ApplicationController
layout 'plantillaP'
require 'uri'
require 'net/https'
require 'open-uri'
#!/usr/bin/ruby -w


def envio_apuesta
  
      @error = true
      @apuesta = '1'
      if re = request_exception   ## Validacion de correcta estructura del XML de Apuestas
        excepcion = re.name.to_s
        if excepcion == "REXML::ParseException"
          xml_apuestas = nil
#        else
#          xml_apuestas = params[:list]
        end
      end

        params[:list][:apuesta].each do |apuesta| ## Lectura del XML de Apuestas

        @token = Token.find(:first, :conditions => ["id=?", apuesta[:token]])
        @token_id = apuesta[:token]
        @fecha_creacion_token=@token.creacion
        @resta = ((Time.now-@fecha_creacion_token)/60).to_i

        if @resta<5 ## Validacion del token de seguridad
            @evento= Evento.find(:first, :conditions => ["id=?", apuesta[:evento]])## Extraccion de informacion del XML
            @evento_id= apuesta[:evento]
            @monto_apuesta = apuesta[:monto]
            @fecha_apuesta = apuesta[:fecha]
            @hora_apuesta = apuesta[:hora]
            @categoria = Categoria.find(:first, :conditions => ["id=?", apuesta[:categoria]])
            @maquina = Maquina.find(:first, :conditions => ["id=?", apuesta[:maquina]])

            apuesta[:list][:participante].each do |participante|

                    @participante = Participante.find(:first, :conditions => ["id=?", participante[:id]])
                    @participante_id = participante[:id]
                    @posicion_participante = participante[:posicion]

                    if @participante_id==0
                    else
                        if @evento and @participante and @maquina and @categoria# Validacion de la informacion proveniente del XML
                              @apuesta2 = Apuesta.new
                              @apuesta2.monto=@monto_apuesta
                              @apuesta2.fecha=@fecha_apuesta
                              @apuesta2.hora=@hora_apuesta
                              @apuesta2.save

                              @p_e_a = ParticipanteEventoApuesta.new
                              @p_e_a.evento_id = @evento_id
                              @p_e_a.participante_Id = @participante_id
                              @p_e_a.apuesta_id = @apuesta2.id
                              @p_e_a.posicion = @posicion_participante
                              @p_e_a.save
                              @error = false
                        else
                          @error = true
                          @mensaje = 'Error en la congruencia de los datos.'
                        end
                    end                  
            end
        else
            @error = true
            @mensaje = 'Error, la validez del token ha caducado. Debe realizar una nueva solicitud'
        end
        
        end

      respond_to do |format|
        if @error == true
          format.xml {render :status => :created}
        else
          format.xml {render :status => :created}
        end
      end    
end

def token
#      if re = request_exception
#        excepcion = re.name.to_s
#        if excepcion == "REXML::ParseException"
#          xml_apuestas = nil
##        else
##          xml_apuestas = params[:list]
#        end
#      end
          @error = true
          xml_solicitud =  params[:solicitud_token]

          @maquina = Maquina.find(:first, :conditions => ["id=?", xml_solicitud["maquina"]])

          if @maquina.status == "activa"
              @token = Token.new
              @token.creacion = Time.now
              @token.save
              @error = false
          else
              @error == true
              @mensaje = "Maquina inactiva. No es posible realizar la actualizacion."
              puts 'Maquina Desactiva'
          end

        respond_to do |format|
        if @error == true
          puts true
          format.xml {render :status => :created }
        else
          format.xml {render :status => :created}
        end
      end 




end
end

#def support_request  # revisar si el cliente ya existe para no crearlo de nuevo y verificar los datos.
#
#    @error = true
#    if re = request_exception
#      re_name = re.name.to_s
#      if re_name == "REXML::ParseException"
#        xml = nil
#      else
#        xml = params[:support_request]
#        puts "toy aki1"+xml.to_s
#      end
#    end
#    if xml != nil    ############### desde aqui
#      puts "toy aki2 "+xml.to_s
#      @client = Client.find(:first, :conditions => [" account = ?", xml["client"] ])
#
#      if @client and @client.active == 1 # si consigue al cliente(compania) y esta activo
#        @address = Address.find(:first, :conditions => [" nickname = ?", xml["address"]])
#        @creditcard = Creditcard.find(:first, :conditions => [" number = ?", xml["creditcard"]])
#
#        if @address and @creditcard and @address.client_id == @client.id and @creditcard.client_id == @client.id# si se econtro la tarjeta y la direccion
#
#          Order.transaction do # Order.transaction
#            @order = Order.new(xml["order"])
#            @order.client_id = @client.id
#            @order.address_id = @address.id
#            @order.creditcard_id = @creditcard.id
#            @order.status = 0
#            @order.latitude = 0
#            @order.longitude = 0
#            if @order.save
#              @package = Package.new(xml["package"])
#              @package.order_id = @order.id
#              @package.price = @package.weight * 5
#              if @package.save
#                @package.price = @package.weight * 5
#                @package.save
#
#                @ourtotal = @package.price + ( @package.price * 0.1 )
#                @error = false
#              end
#            end
#            if @error == true
#              puts "falle"
#              raise ActiveRecord::Rollback
#            end
#
#          end # Order.transaction
#        end # si se econtro la tarjeta y la direccion
#
#      end   # si consigue al cliente(compania) y esta activo
#
#    end             ############# hasta aqui es la logica del web service para recibir
